#include <iostream>
using namespace std;

//普通函数的声明
int noconst_dis(int x);

//常量表达式函数的声明
constexpr int display(int x);

//常量表达式函数的定义，需要在调用之前就定义，否则一样识别不到const表达式
constexpr int display(int x){
    // 除了可以包含 using 指令、typedef 语句以及 static_assert 断言外，只能包含一条 return 返回语句!!!
    return 1 + 2 + x;
}

int main() {
    //调用常量表达式函数
    int a[display(3)] = { 1,2,3,4 };
    // int b[noconst_dis(3)] = { 1,2,3,4 }; // 这里报错
    cout << a[2] << endl;
    //调用普通函数
    cout << noconst_dis(3) << endl;
    return 0;
}

//普通函数的定义
int noconst_dis(int x) {
    return 1 + 2 + x;
}

